package qgs.zisu.javaconcurrency.javaconcurrency.chapter11_ExitCapture;

/**
 * @Author: 蔡翔
 * @Date: 2019/10/20 13:20
 * @Version 1.0
 *
 * 线程报错了异常
 */

public class ThreadException {
    private final static int A = 10;
    private final static int B = 0;

    public static void main(String[] args) {
        Thread t = new Thread(()->{

            try {
                Thread.sleep(5000);
                int result = A/B;
                System.out.println(result);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        });
        //线程中的run 方法里面的异常是抛不出的，只有调用下面那个方法才能设置 异常方法处理。
        t.setUncaughtExceptionHandler((thread,e)->{
            //这里的参数 thread 是执行线程，e是在执行线程里面执行 后报错异常。。其实这两个参数是传进来的（自带的）。或者理解为“反向输入”。
            System.out.println(e);
            System.out.println(thread);
        });
        t.start();
    }
}
